package com.mini.grpc.loadbalance;

import java.net.SocketAddress;
import java.util.List;

/**
 * 负载均衡器提供者接口
 * 用于创建和管理不同类型的负载均衡器
 * 
 * @author Mini-gRPC
 */
public interface LoadBalancerProvider {
    
    /**
     * 获取负载均衡器名称
     * 
     * @return 负载均衡器名称
     */
    String getName();
    
    /**
     * 创建负载均衡器实例
     * 
     * @return 负载均衡器实例
     */
    LoadBalancer newLoadBalancer();
    
    /**
     * 创建负载均衡器实例并初始化地址列表
     * 
     * @param addresses 初始地址列表
     * @return 负载均衡器实例
     */
    LoadBalancer newLoadBalancer(List<SocketAddress> addresses);
    
    /**
     * 判断是否可用
     * 
     * @return 如果可用返回true
     */
    boolean isAvailable();
    
    /**
     * 获取优先级
     * 数值越小优先级越高
     * 
     * @return 优先级
     */
    int getPriority();
} 